package com.ruoyi.durian.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.durian.domain.LlOrder;
import com.ruoyi.durian.domain.dto.OrderEvaluateDto;
import com.ruoyi.durian.domain.dto.SaveOrderDto;

import java.util.List;

/**
* @author lenovo
* @description 针对表【ll_order(订单模块-订单表)】的数据库操作Service
* @createDate 2024-07-29 21:04:10
*/
public interface LlOrderService extends IService<LlOrder> {

    /**
     * 乘客取消订单
     *
     * @param orderId  订单id
     * @return
     */
    AjaxResult closeOrder(Integer orderId);

    /**
     * 结算使用优惠券
     * @param orderId
     * @param couponId
     * @return
     */
    AjaxResult useCoupon(Integer orderId, Integer couponId);

    /**
     * 首页订单数据
     *
     * @return
     */
    AjaxResult orderNumInfo();

    /**
     * 首页展示的订单
     *
     * @return
     */
    List<LlOrder> selectLsit();

    /**
     * 折线图-一周内交易额
     *
     * @return
     */
    AjaxResult priceOnWeek();

    /**
     * 饼状图-车型接单占比
     *
     * @return
     */
    AjaxResult carTypeOnOrder();

    /**
     * 柱状图-订单状态
     *
     * @return
     */
    AjaxResult orderTypeList();

    /**
     * 正在进行中的订单数量查询
     * @return
     */
    Long findOrderIng();

    /**
     * 获取当前用户的总里程数
     * @return
     */
    AjaxResult getAllMileage();

    /**
     * 删除订单
     * @param id
     * @return
     */
    AjaxResult delByOrderId(Integer id);

    /**
     * 订单总数
     * @return
     */
    Long getOrderCount();


    /**
     * 乘客对评价中司机的评价
     * @param orderEvaluateDto
     * @return
     */
    AjaxResult evaluate(OrderEvaluateDto orderEvaluateDto);

    /**
     * 定时任务检查未支付的订单
     */
    Integer checkNotPayOrder();

    /**
     * 乘客发起订单
     *
     * @return
     */
    AjaxResult saveOrder(SaveOrderDto saveOrderDto);
}
